// STLVector.h: interface for the CSTLVector class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_STLVECTOR_H__7DBA0D77_BD94_4644_AF8F_164824E29C98__INCLUDED_)
#define AFX_STLVECTOR_H__7DBA0D77_BD94_4644_AF8F_164824E29C98__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "STLAlgo.h"

template < class T, class A = allocator<T> >
class CSTLVector : public std::vector<T,A>  
{
public:
    CSTLVector(const A& al = A())
		: std::vector<T,A>(al) {};
    CSTLVector(size_type n, const T& v = T(), const A& al = A())
		: std::vector<T,A>(n,v,al) {};
    CSTLVector(const CSTLVector<T,A>& x)
		: std::vector<T,A>(x){};
    CSTLVector(const_iterator first, const_iterator last,
        const A& al = A())
		: std::vector<T,A>(first,last,al){};

	void Serialize(CArchive& ar);

	friend CArchive& operator << (CArchive& ar, const CSTLVector<T,A>& v);
	friend CArchive& operator >> (CArchive& ar, const CSTLVector<T,A>& v);
};


/*! CSTLVectord 
\brief A CSTLVector<double> 
\ingroup HydroMaxStruct
*/
typedef CSTLVector<double> CSTLVectord;

/*! CSTLVectordw 
\brief A CSTLVector<double> 
\ingroup HydroMaxStruct
*/
typedef CSTLVector<DWORD> CSTLVectordw;

/*! CSTLVectorString 
\brief A CSTLVector<std::string> 
\ingroup HydroMaxStruct
*/
typedef CSTLVector<std::string> CSTLVectorString;

/*! CSTLVectordVector 
\brief A CSTLVector<CSTLVectord> 
\ingroup HydroMaxStruct
*/
typedef CSTLVector<CSTLVectord> CSTLVectordVector;

#endif // !defined(AFX_STLVECTOR_H__7DBA0D77_BD94_4644_AF8F_164824E29C98__INCLUDED_)
